home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / e / e_modules02.lha / e_modules02 / unpack / modules / libraries / Unpack.e next >
Encoding:
Text File  |  1996-07-31  |  14.8 KB  |  306 lines

  1. OPT MODULE
  2. OPT PREPROCESS,EXPORT
  3.  
  4. MODULE 'exec/io','exec/libraries','dos/dosextens','exec/execbase',
  5.        'exec/ports','dos/dosextens','intuition/intuitionbase'
  6.  
  7. #define UNPACKNAME 'unpack.library'
  8. CONST   UNPACKVERSION  = 42,
  9.         UNPACKREVISION = 71
  10.  
  11. -> Library Base Structure
  12. OBJECT unpacklibrary
  13.    libnode:lib
  14.    seglist:LONG
  15.    lib_dosbase:PTR TO doslibrary
  16.    lib_intbase:PTR TO intuitionbase
  17.    lib_sysbase:PTR TO execbase
  18. ENDOBJECT
  19.  
  20. -> Unpack Numbers Structure (V37+)
  21. OBJECT numberstruct
  22.   version:INT              /* Library Version */
  23.   revision:INT             /* Library Revision */
  24.   types:INT
  25.   unpackers:INT
  26. ENDOBJECT
  27.  
  28. -> Unpacker List Structure (V42+)
  29. OBJECT unpliststruct
  30.   name:PTR TO CHAR
  31.   crunchnum:INT
  32.   typenum:INT
  33.   type:CHAR
  34.   flags:CHAR
  35.   reserved:LONG
  36. ENDOBJECT
  37. CONST ULFB_ENCRYPTED = 0
  38.  
  39. -> Drive Structure (V36+)
  40. OBJECT drivestruct
  41.   unpackinfo:PTR TO unpackinfo
  42.   iostdreq:PTR TO iostd
  43.   msgport:PTR TO mp
  44.   devname[48]:ARRAY OF CHAR
  45.   drivename[10]:ARRAY OF CHAR
  46. ENDOBJECT
  47.  
  48. -> Unpack Info Structure
  49. OBJECT unpackinfo
  50.   filename:PTR TO CHAR
  51.   path:PTR TO CHAR
  52.   jump:LONG
  53.   crunchername:PTR TO CHAR
  54.   decrunchadr:LONG
  55.   decrunchlen:LONG
  56.   errornum:INT
  57.   crunchnum:INT
  58.   crunchtype:CHAR
  59.   flag:CHAR
  60.   loadnamepoi:PTR TO CHAR
  61.   crunchlen:LONG
  62.   userdata:LONG          -> v35+
  63.   trackjump:LONG         -> v36+
  64.   trkerrjump:LONG        -> v36+
  65.   offset:LONG            -> v36+
  66.   track:INT              -> v36+
  67.   errormsg:PTR TO CHAR   -> v37+
  68.   crunchadr:LONG         -> v37+
  69.   lhapattern:PTR TO CHAR -> v38+
  70.   usefilenamepointer:CHAR-> v39+
  71.    pad:CHAR
  72.   address:LONG           -> v42+
  73.   jumpadr:LONG           -> v42+
  74.   password:LONG          -> v42+
  75.   private[872]:ARRAY OF CHAR  -> Private Data, Do NOT Touch
  76. ENDOBJECT
  77.  
  78. -> The flag Have The Following Definitions:
  79. CONST  UFB_ONEFILE = 0,    /* This Select To Decrunch One File Or All Files In An Archive.*/
  80.        UFB_DELETE  = 1,    /* Delete Files After Scanning. */
  81.        UFB_NOFREE  = 2,    /* Free Memory After Jump (V35+) */
  82.        UFB_BANNER  = 3,    /* Give Banner (V36+) */
  83.        UFB_NOLOAD  = 4,    /* Do Not Load File (V37+) */
  84.        UFB_PROTECT = 5,    /* Change Protection Bits (V38+) */
  85.        UFB_NOA4    = 6,    /* A4 -> A2 */
  86.        UFB_CHIPMEM = 7     /* Decrunch To Chip Memory (V42+) */
  87.  
  88. SET    UFN_ONEFILE,UFN_DELETE,UFN_NOFREE,UFN_BANNER,UFN_NOLOAD,
  89.        UFN_PROTECT,UFN_NOA4,UFN_CHIPMEM
  90.  
  91. -> And Now For The crunchtype Flag:
  92. CONST  CRU_ARCHIVE   =  1,   /* Archive (Lha, Zoo Etc.) */
  93.        CRU_DATA      =  2,   /* Data File */
  94.        CRU_OBJECT    =  3,   /* Object File */
  95.        CRU_OBJECT2   =  4,   /* 2 Segment Object File */
  96.        CRU_TRACK     =  5,   /* Track File (DMS) (V36+) */
  97.        CRU_ADDRESS   =  6,   /* Address File (V42+) */
  98.        CRUB_ENCRYP   =  7    /* Encrypted File (If Bit Is Set) */
  99.  
  100. -> And The error Flag:
  101. CONST  UERR_OPEN        = 1,    /* Can't Open File */
  102.        UERR_READWRITE   = 2,    /* Read/Write Error */
  103.        UERR_MEMORY      = 3,    /* Allocation Error (Out Of Memory) */
  104.        UERR_DETERMINE   = 4,    /* Can't Determine File */
  105.        UERR_PASSWORD    = 5,    /* Illegal Password */
  106.        UERR_HUNK        = 6,    /* Hunk Error */
  107.        UERR_EXTERN      = 7,    /* Extern File Error */
  108.        UERR_CORRUPT     = 8,    /* Crunched File Is Corrupt (V35+) */
  109.        UERR_DEVICE      = 9,    /* Illegal Device (V36+) */
  110.        UERR_DEVOPEN     = 10,   /* Couldn't Opn Dev. Or Create Port V36+ */
  111.        UERR_CRC         = 11,   /* CRC Checksum Error (V36+) */
  112.        UERR_CHECKSUM    = 12,   /* Checksum Error (V36+) */
  113.        UERR_OLD         = 13,   /* Decruncher In Lib. Too Old (V36+) */
  114.        UERR_DEVERR      = 14,   /* Error From Device (V36+) */
  115.        UERR_PROTECT     = 15,   /* Couldn't Set Protection Bits (V38+) */
  116.        UERR_OUTPUT      = 16,   /* Output File Error (V39+) */
  117.        UERR_OPENLIBRARY = 17,   /* Couldn't Open Library (V40+) */
  118.        UERR_UNKNOWN     = 18,   /* Unknown Error (V40+) */
  119.        UERR_UNPACK      = 19,   /* Can't Unpack (V42+) */
  120.        UERR_PASSWORDREQ = 20,   /* Password Required (V42+) */
  121.        UERR_DIRECTORY   = 21    /* Can't Make Directory (V42+) */
  122.  
  123. -> At Last The Cruncher Numbers:
  124. CONST  MAXFILEPACK     = 12
  125. CONST  CN_LHA          = 1,    /* Lha */
  126.        CN_LHASFX       = 2,    /* LhaSFX */
  127.        CN_PAK10        = 3,    /* Pak 1.0 */
  128.        CN_DMS          = 4,    /* Dms */
  129.        CN_LZX          = 5,    /* Lzx */
  130.        CN_PCOMPRESS    = 6,    /* P-Compress */
  131.        CN_DMSE         = 7,    /* Dms Encrypted */
  132.        CN_GNUPACK10D   = 12,   /* Gnu Packer 1.0 Data */
  133.        CN_GNUPACK12D   = 13,   /* Gnu Packer 1.1/1.2 Data */
  134.        CN_GNUPACK12TWO = 14,   /* Gnu Packer 1.1/1.2 Two Segment */
  135.        CN_GNUPACK10    = 15,   /* Gnu Packer 1.0 */
  136.        CN_GNUPACK12    = 16,   /* Gnu Packer 1.1/1.2 One Segment */
  137.        CN_PPDATA       = 17,   /* PowerPacker Data */
  138.        CN_PPDATAE      = 18,   /* PowerPacker Data/Encrypted */
  139.        CN_PPLOADSEG    = 19,   /* PowerPacker LoadSeg */
  140.        CN_PP40LIB      = 20,   /* PowerPacker 4.0 Library */
  141.        CN_PP40LIBE     = 21,   /* PowerPacker 4.0 Library/Encrypted */
  142.        CN_PP40LIBOV    = 22,   /* PowerPacker 4.0 Library/Overlayed */
  143.        CN_PP2X         = 23,   /* PowerPacker 2.x Normal */
  144.        CN_PP30         = 24,   /* PowerPacker 3.0 */
  145.        CN_PP30E        = 25,   /* PowerPacker 3.0 Encrypted */
  146.        CN_PP30OV       = 26,   /* PowerPacker 3.0 Overlayed */
  147.        CN_PP40         = 27,   /* PowerPacker 4.0 */
  148.        CN_PP40E        = 28,   /* PowerPacker 4.0 Encrypted */
  149.        CN_PP40Ov       = 29,   /* PowerPacker 4.0 Overlayed */
  150.        CN_TURTLE141    = 30,   /* Turtle Smasher 1.3-1.41 */
  151.        CN_TSQUEEZE80   = 31,   /* TurboSqueezer 8.0 */
  152.        CN_TSQUEEZE80S  = 32,   /* TurboSqueezer 8.0 Small */
  153.        CN_TRYIT101     = 33,   /* TryIt 1.01 */
  154.        CN_TITANIC11    = 34,   /* Titanics Cruncher 1.1 */
  155.        CN_TITANIC12    = 35,   /* Titanics Cruncher 1.2 */
  156.        CN_TIME22       = 36,   /* Time Cruncher 1.7-2.2 */
  157.        CN_TETRA21      = 37,   /* TetraPack 2.1 */
  158.        CN_TETRA21PRO   = 38,   /* TetraPack 2.1 Pro */
  159.        CN_TETRA22      = 39,   /* TetraPack 2.2 */
  160.        CN_TETRA22PRO   = 40,   /* TetraPack 2.2 Pro */
  161.        CN_TETRA102     = 41,   /* TetraCrunch 1.02 */
  162.        CN_TETRA11      = 42,   /* TetraCrunch 1.1 */
  163.        CN_STONE299D    = 43,   /* Stone Cracker 2.99c-2.99d */
  164.        CN_STONE311     = 44,   /* Stone Cracker 3.11 */
  165.        CN_STONE401A    = 45,   /* Stone Cracker 4.01 Address */
  166.        CN_IMPLODER31   = 46,   /* Imploder 1.0-3.1 */
  167.        CN_IMPLODER31P  = 47,   /* Imploder 1.0-3.1 Protected */
  168.        CN_IMPLODER31L  = 48,   /* Imploder 1.0-3.1 Library */
  169.        CN_IMPLODER31LP = 49,   /* Imploder 1.0-3.1 Library/Protected */
  170.        CN_IMPLODER40   = 50,   /* Imploder 4.0 */
  171.        CN_IMPLODER40L  = 51,   /* Imploder 4.0 Library */
  172.        CN_BYTKIL13     = 52,   /* ByteKiller 1.2-1.3 */
  173.        CN_BYTKIL20     = 53,   /* ByteKiller 2.0 */
  174.        CN_BYTKIL30     = 54,   /* ByteKiller 3.0 */
  175.        CN_TNMCRUN11    = 55,   /* TNM Cruncher 1.1 */
  176.        CN_CRUNMAST10   = 56,   /* Crunch Master 1.0 */
  177.        CN_CRMANIA191A  = 57,   /* Crunch-Mania 1.4-1.91 Address */
  178.        CN_CRMANIA18AP  = 58,   /* Crunch-Mania 1.4-1.8 Address/Pro */
  179.        CN_CRMANIA191D  = 59,   /* Crunch-Mania 1.4-1.91 Data */
  180.        CN_CRMANIA191   = 60,   /* Crunch-Mania 1.4-1.91 */
  181.        CN_CRMANIA191S  = 61,   /* Crunch-Mania 1.4-1.91 Simple */
  182.        CN_CRMANIA191L  = 62,   /* Crunch-Mania 1.8-1.91 Library */
  183.        CN_CRMANIA191LH = 63,   /* Crunch-Mania 1.8-1.91 Library/Huffman */
  184.        CN_CRMANIA191H  = 64,   /* Crunch-Mania 1.8-1.91 Huffman */
  185.        CN_CRMANIA191DH = 65,   /* Crunch-Mania 1.8-1.91 Data/Huffman */
  186.        CN_CRMANIA191DHS= 66,   /* Crunch-Mania 1.8-1.91 Data/Huff/Sample */
  187.        CN_CRMANIA191DS = 67,   /* Crunch-Mania 1.8-1.91 Data/Sample */
  188.        CN_DOUBACTION10 = 68,   /* Double Action 1.0 */
  189.        CN_DRAGPACK10   = 69,   /* DragPack 1.0 */
  190.        CN_HOUSE14      = 70,   /* House 1.4 (RSI-Packer) */
  191.        CN_HPC          = 71,   /* High Pressure Cruncher */
  192.        CN_HPCU         = 72,   /* High Pressure Cruncher Unlinked */
  193.        CN_IAM10ICE     = 73,   /* IAM Packer 1.0 Ice */
  194.        CN_IAM10ICED    = 74,   /* IAM Packer 1.0 Ice/Data */
  195.        CN_IAM10ATM5    = 75,   /* IAM Packer 1.0 Atm5 */
  196.        CN_IAM10ATM5D   = 76,   /* IAM Packer 1.0 Atm5/Data */
  197.        CN_ISC15P1      = 77,   /* ISC 1.5 Pass 1 */
  198.        CN_ISC15P2      = 78,   /* ISC 1.5 Pass 2 */
  199.        CN_ISC15P3      = 79,   /* ISC 1.5 Pass 3 */
  200.        CN_MASTCRUN31A  = 80,   /* Master Cruncher 3.0-3.1 Address */
  201.        CN_MASTCRUN31   = 81,   /* Master Cruncher 3.0-3.1 */
  202.        CN_MEGACRUN10   = 83,   /* Megacruncher 1.0 */
  203.        CN_MEGACRUN12A  = 84,   /* Megacruncher 1.2 Address */
  204.        CN_MEGACRUN12   = 85,   /* Megacruncher 1.2 */
  205.        CN_DEFJAM36     = 86,   /* Defjam 3.2-3.6 */
  206.        CN_DEFJAM36PRO  = 87,   /* Defjam 3.2-3.6 Pro */
  207.        CN_PACKIT10     = 88,   /* PackIt 1.0 */
  208.        CN_PACKIT10D    = 89,   /* PackIt 1.0 Data */
  209.        CN_RELOKIT10    = 90,   /* Relokit 1.0 */
  210.        CN_SPIKE        = 91,   /* Spike Cruncher */
  211.        CN_SUPERCRUN27  = 92,   /* Super Cruncher 2.7 */
  212.        CN_SYNCRO46     = 93,   /* Syncro Packer 4.6 */
  213.        CN_SYNCRO46P    = 94,   /* Syncro Packer 4.6 Pro */
  214.        CN_SYNCRO46R    = 95,   /* Syncro Packer 4.6 Raw */
  215.        CN_SYNCRO46RP   = 96,   /* Syncro Packer 4.6 Raw/Pro */
  216.        CN_STONE400     = 97,   /* Stone Cracker 4.00 */
  217.        CN_STONE400D    = 98,   /* Stone Cracker 4.00 Data */
  218.        CN_STONE401     = 99,   /* Stone Cracker 4.01 */
  219.        CN_STONE401D    = 100,  /* Stone Cracker 4.01 Data */
  220.        CN_MAXPACKER12  = 113,  /* MaxPacker 1.2 */
  221.        CN_PMC          = 114,  /* PMC */
  222.        CN_STONE271     = 115,  /* Stone Cracker 2.70-2.71 */
  223.        CN_STONE271K    = 116,  /* Stone Cracker 2.70-2.71 Kill */
  224.        CN_STONE310     = 117,  /* Stone Cracker 3.10 */
  225.        CN_STONE402     = 118,  /* Stone Cracker 4.02a */
  226.        CN_STONE402A    = 119,  /* Stone Cracker 4.02a Address */
  227.        CN_STONE402D    = 120,  /* Stone Cracker 4.02a Data */
  228.        CN_STONE402L    = 121,  /* Stone Cracker 4.02a Library */
  229.        CN_TURTLE200    = 122,  /* Turtle Smasher 2.00 */
  230.        CN_TURTLE200D   = 123,  /* Turtle Smasher 2.00 Data */
  231.        CN_ANC          = 124,  /* ANC-Cruncher */
  232.        CN_DISIMP10     = 125,  /* Discovery File Imploder 1.0 */
  233.        CN_HQC20        = 126,  /* HQC Cruncher 2.0 */
  234.        CN_STONE292     = 130,  /* Stone Cracker 2.92 */
  235.        CN_STONE299     = 131,  /* Stone Cracker 2.99 */
  236.        CN_PCOMPRESSD   = 132,  /* P-Compress Data */
  237.        CN_CRMANIA191AP = 133,  /* Crunch-Mania 1.9t-1.91 Address/Pro */
  238.        CN_CRMANIA191AH = 134,  /* Crunch-Mania 1.9t-1.91 Address/Huffman */
  239.        CN_CRMANIA19APH = 135,  /* Crunch-Mania 1.9t Address/Pro/Huff */
  240.        CN_TSQUEEZE61   = 136,  /* TurboSqueezer 6.1 */
  241.        CN_FLASHSPEED10 = 137,  /* FlashSpeed 1.0 */
  242.        CN_BYTKILPRO10  = 138,  /* ByteKiller 1.0 Pro */
  243.        CN_BYTKILPRO10K = 139,  /* ByteKiller 1.0 Pro K */
  244.        CN_STONE401BA   = 140,  /* Stone Cracker 4.01ß Address */
  245.        CN_TRASHELI10   = 141,  /* Trash Eliminator 1.0 */
  246.        CN_ULTIMATE11   = 142,  /* Ultimate Packer 1.1 */
  247.        CN_TFA154       = 143,  /* TFA Cruncher 1.54 */
  248.        CN_SEXEC11      = 144,  /* S-Exec 1.1 */
  249.        CN_STONE4103    = 145,  /* Stone Cracker 4.10.2-4.10.3 */
  250.        CN_STONE4103A   = 146,  /* Stone Cracker 4.10.2-4.10.3 Address */
  251.        CN_STONE4103APL = 147,  /* Stone Cracker 4.10.2-4.10.3 Adr/Plain */
  252.        CN_STONE4103AP  = 148,  /* Stone Cracker 4.10.2-4.10.3 Adr/Pro */
  253.        CN_STONE4103D   = 149,  /* Stone Cracker 4.10.2-4.10.3 Data */
  254.        CN_STONE4102L   = 150,  /* Stone Cracker 4.10.2 Library */
  255.        CN_DRAGPACK252  = 151,  /* DragPack 2.52 */
  256.        CN_DRAGPACK252D = 152,  /* DragPack 2.52 Data */
  257.        CN_STONE300     = 153,  /* Stone Cracker 3.00 */
  258.        CN_STONE300D    = 154,  /* Stone Cracker 3.00 Data */
  259.        CN_STONE300K    = 155,  /* Stone Cracker 3.00 Kill */
  260.        CN_PP23MASTER   = 157,  /* PowerPacker 2.3 Master */
  261.        CN_XPK          = 158,  /* XPK */
  262.        CN_XPKE         = 159,  /* XPK Encrypted */
  263.        CN_CRMANIA191DE = 160,  /* Crunch-Mania 1.9t-1.91 Data/Encrypted */
  264.        CN_CRMANIA191DSE= 161,  /* Crunch-Mania 1.9t-1.91 Data/Samp/Encr */
  265.        CN_CRMANIA191DHE= 162,  /* Crunch-Mania 1.9t-1.91 Data/Huff/Encr */
  266.        CN_CRMANIA191DHSE=163,  /* Crunch-Mania 1.9t-1.91 Dat/Huf/Sam/Enc */
  267.        CN_CRMANIA191APH= 164,  /* Crunch-Mania 1.91 Address/Pro/Huff */
  268.        CN_CRMATIC10D   = 165,  /* Crunch-o-Matic 1.0 Data */
  269.        CN_CRMATIC10E   = 166,  /* Crunch-o-Matic 1.0 Execute */
  270.        CN_CRMATIC10M   = 167,  /* Crunch-o-Matic 1.0 Module */
  271.        CN_CRMATIC10P   = 168,  /* Crunch-o-Matic 1.0 Picture */
  272.        CN_CRMATIC10T   = 169,  /* Crunch-o-Matic 1.0 Text */
  273.        CN_STONE4103L   = 170,  /* Stone Cracker 4.10.3 Library */
  274.        CN_CHRYSEIS09   = 171,  /* Chryseis Cruncher 0.9 */
  275.        CN_TUC116D      = 172,  /* TUC Cruncher 1.16d */
  276.        CN_TUC116DD     = 173,  /* TUC Cruncher 1.16d Data */
  277.        CN_SOUNDTRKPACK = 174,  /* ST-Packer */
  278.        CN_PHD          = 175,  /* PHD Compressor */
  279.        CN_LIGHTPACK15  = 176,  /* LightPack 1.5 */
  280.        CN_PPRNC1       = 177,  /* ProPack (RNC) Mode 1 */
  281.        CN_PPRNC1V      = 178,  /* ProPack (RNC) Validate Mode 1 */
  282.        CN_PPRNC1K      = 179,  /* ProPack (RNC) Key Mode 1 */
  283.        CN_PPRNC1VK     = 180,  /* ProPack (RNC) Validate Key Mode 1 */
  284.        CN_PPRNC168000  = 181,  /* ProPack (RNC) 68000 Mode 1 */
  285.        CN_PPRNC168000V = 182,  /* ProPack (RNC) 68000 Validate Mode 1 */
  286.        CN_PPRNC168000K = 183,  /* ProPack (RNC) 68000 Key Mode 1 */
  287.        CN_PPRNC168000VK= 184,  /* ProPack (RNC) 68000 Valid. Key Mode 1 */
  288.        CN_PPRNC1D      = 185,  /* ProPack (RNC) Data Mode 1 */
  289.        CN_PPRNC1DK     = 186,  /* ProPack (RNC) Data Key Mode 1 */
  290.        CN_PPRNC2       = 187,  /* ProPack (RNC) Mode 2 */
  291.        CN_PPRNC2V      = 188,  /* ProPack (RNC) Validate Mode 2 */
  292.        CN_PPRNC2K      = 189,  /* ProPack (RNC) Key Mode 2 */
  293.        CN_PPRNC2VK     = 190,  /* ProPack (RNC) Validate Key Mode 2 */
  294.        CN_PPRNC268000  = 191,  /* ProPack (RNC) 68000 Mode 2 */
  295.        CN_PPRNC268000V = 192,  /* ProPack (RNC) 68000 Validate Mode 2 */
  296.        CN_PPRNC268000K = 193,  /* ProPack (RNC) 68000 Key Mode 2 */
  297.        CN_PPRNC268000VK= 194,  /* ProPack (RNC) 68000 Valid. Key Mode 2 */
  298.        CN_PPRNC2D      = 195,  /* ProPack (RNC) Data Mode 2 */
  299.        CN_PPRNC2DK     = 196,  /* ProPack (RNC) Data Key Mode 2 */
  300.        CN_IMPLODER31O  = 197,  /* Imploder 1.0-3.1 Overlayed */
  301.        CN_IMPLODER31OP = 198,  /* Imploder 1.0-3.1 Overlayed Protected */
  302.        CN_IMPLODER40O  = 199,  /* Imploder 4.0 Overlayed */
  303.        CN_PP30MASTER   = 200,  /* PowerPacker 3.0 Master */
  304.        CN_PP30MASTERE  = 201,  /* PowerPacker 3.0 Master Encrypted */
  305.        CN_PP30MASTEROV = 202   /* PowerPacker 3.0 Master Overlayed */
  306.